package studystat;

import java.util.Calendar;
import java.util.Date;

/**
 * Wanneer de gebruiker leert, slaapt of sport, zal dit worden opgeslagen als een Activiteit. Hierin staat de belangrijkste informatie die wordt opgeslagen.
 */

public class Activiteit {

	private Date startTijd;

	private Date stopTijd;

	private long rating;

	private boolean gestopt;
	
	private long pauzeDuurInMin;
	
	private Date beginLaatstePauze;
	
	/**
	 * Initialiseer een nieuwe activiteit. Deze begint te lopen op het moment dat ze wordt aangemaakt
	 */
	public Activiteit() {
		startTijd = Calendar.getInstance().getTime(); // Calendar.getInstance() construeert een Calendar-object ingesteld op de datum waarop het gemaakt is.
		gestopt = false;
		pauzeDuurInMin = 0;
	}
	
	/**
	 * Stop de activiteit
	 * @param rating	De rating die aan de activiteit wordt gegeven
	 */
	public void stop(long rating){
		//stopTijd = Calendar.getInstance().getTime();
		this.setRating(rating);
	}
	
	
	/**
	 * De duur van de activiteit wordt weergeven. Dit is de totale duur verminderd met de
	 * duur van de pauzes. Als de activiteit nog niet beëindigd is wordt de duur tot dan toe
	 * weergeven.
	 * @return Het aantal minuten dat de activiteit reeds bezig is, of in beslag heeft genomen
	 */
	public long getDuur() {
		long duur = 0;
		if(gestopt){
			duur = (stopTijd.getTime() - startTijd.getTime())/60000 - pauzeDuurInMin;
		}
		else{
			duur = getDuurActiNogBezig();
		}
		return duur;
	}
	
	public long getDuurActiNogBezig(){
		long duur = ((Calendar.getInstance().getTime().getTime() - startTijd.getTime())/60000) - pauzeDuurInMin;
		return duur;
	}

	/**
	 * @return De rating van de activiteit
	 */
	public long getRating() {
		return rating;
	}

	/**
	 * @param rating De nieuwe rating
	 */
	public void setRating(long rating) {
		this.rating = rating;
	}
	
	/**
	 * Verander de begintijd van de activiteit
	 * @param Calendar	De nieuwe begindatum
	 */
	public void setStartTijd(Date Calendar) {
		startTijd = Calendar;
	}
	
	/**
	 * Verander de eindtijd van de activiteit
	 * @param Calendar	De nieuwe eindtijd
	 */
	public void setStopTijd(Date Calendar) {
		stopTijd = Calendar;
	}
	
	/**
	 * @return	De starttijd van de activiteit
	 */
	public Date getStartTijd() {
		return startTijd;
	}
	
	/**
	 * @return De stoptijd van de activiteit
	 */
	public Date getStopTijd() {
		return stopTijd;
	}
	
	public boolean getGestopt(){
		return gestopt;
	}
	
	public void setGestopt(boolean gestopt){
		this.gestopt = gestopt;
	}
	
	public void setBeginLaatstePauze(Date begin){
		beginLaatstePauze = begin;
	}
	
	public void setPauzeDuur(long duur){
		pauzeDuurInMin = duur;
	}
	
	public Date getBeginLaatstePauze(){
		return beginLaatstePauze;
	}
	
	public long getPauzeDuurInMin() {
		return pauzeDuurInMin;
	}

}
